//
//  StorageUtils.swift
//  Pods
//
//  Created by HONOR on 2025/5/6.
//
import Foundation

class StorageUtils {
    

    // 定义优先目录类型（类似 Android 的外部存储）
    private let preferredDirectory: FileManager.SearchPathDirectory = .applicationSupportDirectory
    // 定义备用目录类型（类似 Android 的内部存储）
    private let fallbackDirectory: FileManager.SearchPathDirectory = .documentDirectory

    // MARK: - 获取安全存储路径
    static func getSafeStoragePath(subdirectory: String? = nil) -> String? {
        let fileManager = FileManager.default
        
        // 优先尝试首选目录
//        if let preferredURL = getDirectoryURL(
//            directory: preferredDirectory,
//            subdirectory: subdirectory
//        ) {
//            return preferredURL.path
//        }
//        
//        // 首选目录失败时回退到备用目录
//        if let fallbackURL = getDirectoryURL(
//            directory: fallbackDirectory,
//            subdirectory: subdirectory
//        ) {
//            return fallbackURL.path
//        }
        
        // 全部失败返回 nil（理论上不会执行到此处）
        return nil
    }

    // MARK: - 核心目录处理
    private func getDirectoryURL(
        directory: FileManager.SearchPathDirectory,
        subdirectory: String?
    ) -> URL? {
        let fileManager = FileManager.default
        
        guard let baseURL = fileManager.urls(
            for: directory,
            in: .userDomainMask
        ).first else {
            print("无法获取基础目录: \(directory)")
            return nil
        }
        
        // 拼接子目录（可选）
        let targetURL: URL
        if let subdir = subdirectory {
            targetURL = baseURL.appendingPathComponent(subdir)
        } else {
            targetURL = baseURL
        }
        
        // 确保目录存在
        do {
            try fileManager.createDirectory(
                at: targetURL,
                withIntermediateDirectories: true,
                attributes: nil
            )
            return targetURL
        } catch {
            print("目录创建失败: \(error.localizedDescription)")
            return nil
        }
    }

    // MARK: - 使用示例
    // 获取默认路径（无子目录）
//    if let path = getSafeStoragePath() {
//        print("存储路径: \(path)")
//        // 输出示例:
//        // 优先目录 -> /var/mobile/Containers/Data/Application/.../Library/Application Support
//        // 回退目录 -> /var/mobile/Containers/Data/Application/.../Documents
//    }
//
//    // 获取带子目录的路径（类似 Android 的 DIRECTORY_DOWNLOADS）
//    if let downloadPath = getSafeStoragePath(subdirectory: "Downloads") {
//        print("下载路径: \(downloadPath)")
//        // 输出示例:
//        // 优先目录 -> .../Library/Application Support/Downloads
//        // 回退目录 -> .../Documents/Downloads
//    }
}
